//////////////////////////////////////////////////////////////////////////
//             Copyright 2012 PPS.tv All Rights Reserved                		//
//////////////////////////////////////////////////////////////////////////
/* =======================================================================
 * 系统名 	  : Hadoop Web后台管理系统
 * 子系统名  : 常量类
 * Class名 	  : ConfigurableConstants
 * 概要    	  : 可用Properties文件配置的Constants基类.
 * 版本      日期            作者名         备注
 * 1.0.0     2012.07.31   李刚            初次作成
 * =======================================================================
 */
package common;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 可用Properties文件配置的Constants基类.
 * 
 * @version 1.0.0
 */
public class ConfigurableConstants {

	protected static Logger logger = LoggerFactory.getLogger(ConfigurableConstants.class);
	protected static Properties p = new Properties();

	/**
	 * 静态读入属性文件到Properties p变量中
	 */
	protected static void init(String propertyFileName) {
		InputStream in = null;
		try {
			in = ConfigurableConstants.class.getClassLoader().getResourceAsStream(propertyFileName);
			//String configPath = PathKit.getWebRootPath() + File.separator + "WEB-INF" + File.separator + propertyFileName;
			//logger.info("configPath:"+configPath);
			//in = new FileInputStream(configPath);
			if (in != null) {
				p.load(in);
			}
		} catch (IOException e) {
			logger.error("load " + propertyFileName + " into Constants error!");
		} finally {
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					logger.error("close " + propertyFileName + " error!");
				}
			}
		}
	}

	/**
	 * 封装了Properties类的getProperty函数,使p变量对子类透明.
	 * 
	 * @param key
	 *            property key.
	 * @param defaultValue
	 *            当使用property key在properties中取不到值时的默认值.
	 */
	public static String getProperty(String key, String defaultValue) {
		return p.getProperty(key, defaultValue);
	}

	protected static String getProperty(String key, Object... params) {
		String value = getProperty(key);
		return MessageFormat.format(value, params);
	}

	protected static String getProperty(String key, String defaultValue,
			Object... params) {
		String value = getProperty(key, defaultValue);
		return MessageFormat.format(value, params);
	}

	public static String getProperty(String key) {
		return p.getProperty(key, "");
	}

	public static void main(String[] args) {
		//System.out.println(ConfigurableConstants.class.getResource("/").getPath());
		System.out.println(System.getProperty("user.dir"));
	}
	
	
}
